
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package persistencia;

import java.sql.*;
import java.util.*;
import java.util.logging.Level;
import java.util.logging.Logger;
import negocio.Articulo;
import negocio.ArticuloAlquilado;
import negocio.ArticuloVenta;
import negocio.Juego;
import negocio.Pelicula;
import negocio.Proveedor;
import negocio.Tarifa;

/**
 *
 * @author JAVA
 */
public class PersistenciaArticulo {

    public static Articulo obtenerArticulo(int codarticulo) {
        Articulo a = null;
        Connection con = null;
        Statement st = null;
        Proveedor p1 = null;
        Tarifa t1 = null;
        try {
            Class.forName("com.mysql.jdbc.Driver").newInstance();
            con = DriverManager.getConnection("jdbc:mysql://192.168.1.18/videoclub", "cibernos", "1234");
            st = con.createStatement();

            ResultSet r = st.executeQuery("Select id, fechaalta, idproveedor, disponible, sevende, titulo, genero, ano, duracion, actores, valoracion, edadMinima, director, soporte, idtarifa,tipo  from articulo where articulo.id=" + codarticulo + " and articulo.baja=0");
            while (r.next()) {

                if (r.getString("tipo").compareTo("Pelicula") == 0) {
                    p1 = PersistenciaProveedor.obtenerProveedor(r.getInt("idproveedor"));
                    t1 = PersistenciaTarifa.obtenerTarifa(r.getInt("idtarifa"));
                    a = new Pelicula(r.getInt("id"), r.getDate("fechaalta"), p1, r.getBoolean("disponible"), t1, r.getString("titulo"), r.getString("genero"), r.getInt("ano"), r.getInt("duracion"), r.getString("actores"), r.getFloat("valoracion"), r.getInt("edadMinima"), r.getString("director"), r.getBoolean("sevende"));
                } else if (r.getString("tipo").compareTo("Juego") == 0) {
                    p1 = PersistenciaProveedor.obtenerProveedor(r.getInt("idproveedor"));
                    t1 = PersistenciaTarifa.obtenerTarifa(r.getInt("idtarifa"));
                    a = new Juego(r.getInt("id"), r.getDate("fechaalta"), p1, r.getBoolean("disponible"), t1, r.getString("titulo"), r.getString("soporte"), r.getInt("edadMinima"), r.getString("genero"), r.getFloat("valoracion"), r.getBoolean("sevende"));

                } else if (r.getString("tipo").compareTo("ArticuloVenta") == 0) {
                    p1 = PersistenciaProveedor.obtenerProveedor(r.getInt("idproveedor"));
                    t1 = PersistenciaTarifa.obtenerTarifa(r.getInt("idtarifa"));
                    a = new ArticuloVenta(r.getInt("id"), r.getDate("fechaalta"), r.getString("titulo"), p1, t1, r.getBoolean("sevende"), r.getBoolean("disponible"));
                }
            }
            st.close();
            con.close();
        } catch (SQLException ex) {
            Logger.getLogger(PersistenciaArticulo.class.getName()).log(Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            Logger.getLogger(PersistenciaArticulo.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            Logger.getLogger(PersistenciaArticulo.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(PersistenciaArticulo.class.getName()).log(Level.SEVERE, null, ex);
        }

        return a;
    }

    public static Articulo obtenerArticuloPorAlquiler(int codalquiler) {
        Articulo a = null;
        Connection con = null;
        Statement st = null;
        Proveedor p1 = null;
        Tarifa t1 = null;
        try {
            Class.forName("com.mysql.jdbc.Driver").newInstance();
            con = DriverManager.getConnection("jdbc:mysql://192.168.1.18/videoclub", "cibernos", "1234");
            st = con.createStatement();

            ResultSet r = st.executeQuery("Select articulo.id, articulo.fechaalta, articulo.idproveedor, articulo.disponible, articulo.sevende, articulo.titulo, articulo.genero, articulo.ano, articulo.duracion, articulo.actores, articulo.valoracion, articulo.edadMinima, articulo.director, articulo.soporte, articulo.idtarifa,articulo.tipo  from articulo,alquiler where articulo.id=alquiler.idarticulo and alquiler.id=" + codalquiler + " and articulo.baja=0");
            while (r.next()) {

                if (r.getString("tipo").compareTo("Pelicula") == 0) {
                    p1 = PersistenciaProveedor.obtenerProveedor(r.getInt("idproveedor"));
                    t1 = PersistenciaTarifa.obtenerTarifa(r.getInt("idtarifa"));
                    a = new Pelicula(r.getInt("id"), r.getDate("fechaalta"), p1, r.getBoolean("disponible"), t1, r.getString("titulo"), r.getString("genero"), r.getInt("ano"), r.getInt("duracion"), r.getString("actores"), r.getFloat("valoracion"), r.getInt("edadMinima"), r.getString("director"), r.getBoolean("sevende"));
                } else if (r.getString("tipo").compareTo("Juego") == 0) {
                    p1 = PersistenciaProveedor.obtenerProveedor(r.getInt("idproveedor"));
                    t1 = PersistenciaTarifa.obtenerTarifa(r.getInt("idtarifa"));
                    a = new Juego(r.getInt("id"), r.getDate("fechaalta"), p1, r.getBoolean("disponible"), t1, r.getString("titulo"), r.getString("soporte"), r.getInt("edadMinima"), r.getString("genero"), r.getFloat("valoracion"), r.getBoolean("sevende"));

                } else if (r.getString("tipo").compareTo("ArticuloVenta") == 0) {
                    p1 = PersistenciaProveedor.obtenerProveedor(r.getInt("idproveedor"));
                    t1 = PersistenciaTarifa.obtenerTarifa(r.getInt("idtarifa"));
                    a = new ArticuloVenta(r.getInt("id"), r.getDate("fechaalta"), r.getString("titulo"), p1, t1, r.getBoolean("sevende"), r.getBoolean("disponible"));
                }
            }
            st.close();
            con.close();
        } catch (SQLException ex) {
            Logger.getLogger(PersistenciaArticulo.class.getName()).log(Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            Logger.getLogger(PersistenciaArticulo.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            Logger.getLogger(PersistenciaArticulo.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(PersistenciaArticulo.class.getName()).log(Level.SEVERE, null, ex);
        }

        return a;
    }

    public static List<Articulo> obtenerArticulos(String nombre, String valor) {
        List<Articulo> lista = new ArrayList<Articulo>();
        Articulo a = null;
        Connection con = null;
        Statement st = null;
        Proveedor p1 = null;
        Tarifa t1 = null;
        try {
            Class.forName("com.mysql.jdbc.Driver").newInstance();
            con=DriverManager.getConnection("jdbc:mysql://192.168.1.18/videoclub","cibernos","1234");
            st=con.createStatement();           
            ResultSet r=st.executeQuery("Select id, fechaalta, idproveedor, disponible, sevende, baja, titulo, genero, ano, duracion, actores, valoracion, edadMinima, director, soporte, idtarifa, tipo  from articulo where articulo."+nombre+" like '%"+valor+"%' and articulo.baja=0 and articulo.disponible=1");
            while(r.next()){
            
                if(r.getString("tipo").compareTo("Pelicula")==0){
                   p1=PersistenciaProveedor.obtenerProveedor(r.getInt("idproveedor"));
                   t1=PersistenciaTarifa.obtenerTarifa(r.getInt("idtarifa"));
                   a= new Pelicula (r.getInt("id"),r.getDate("fechaalta"),p1,r.getBoolean("disponible"),t1,r.getString("titulo"),r.getString("genero"),r.getInt("ano"),r.getInt("duracion"),r.getString("actores"),r.getFloat("valoracion"),r.getInt("edadMinima"),r.getString("director"),r.getBoolean("sevende"));
                }
                else if(r.getString("tipo").compareTo("Juego")==0){
                    p1=PersistenciaProveedor.obtenerProveedor(r.getInt("idproveedor"));
                    t1=PersistenciaTarifa.obtenerTarifa(r.getInt("idtarifa"));
                    a= new Juego (r.getInt("id"),r.getDate("fechaalta"),p1,r.getBoolean("disponible"),t1,r.getString("titulo"),r.getString("soporte"),r.getInt("edadMinima"),r.getString("genero"),r.getFloat("valoracion"),r.getBoolean("sevende"));
                    
                }else if(r.getString("tipo").compareTo("ArticuloVenta")==0){
                    p1=PersistenciaProveedor.obtenerProveedor(r.getInt("idproveedor"));
                    t1=PersistenciaTarifa.obtenerTarifa(r.getInt("idtarifa"));
                    a = new ArticuloVenta (r.getInt("id"),r.getDate("fechaalta"),r.getString("titulo"),p1,t1,r.getBoolean("sevende"),r.getBoolean("disponible"));
                }
                lista.add(a);
            }
            st.close();
            con.close();
        } catch (SQLException ex) {
            Logger.getLogger(PersistenciaArticulo.class.getName()).log(Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            Logger.getLogger(PersistenciaArticulo.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            Logger.getLogger(PersistenciaArticulo.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(PersistenciaArticulo.class.getName()).log(Level.SEVERE, null, ex);
        }

        return lista;
    }

    public static List<Articulo> obtenerArticulosSeVenden() {
        List<Articulo> lista = new ArrayList<Articulo>();
        Articulo a = null;
        Connection con = null;
        Statement st = null;
        Proveedor p1 = null;
        Tarifa t1 = null;
        try {
            Class.forName("com.mysql.jdbc.Driver").newInstance();
            con = DriverManager.getConnection("jdbc:mysql://192.168.1.18/videoclub", "cibernos", "1234");
            st = con.createStatement();
            ResultSet r = st.executeQuery("Select id, fechaalta, idproveedor, disponible, sevende, baja, titulo, genero, ano, duracion, actores, valoracion, edadMinima, director, soporte, idtarifa, tipo  from articulo where articulo.sevende=1 and articulo.baja=0 and articulo.disponible='1'");
            while (r.next()) {

                if (r.getString("tipo").compareTo("Pelicula") == 0) {
                    p1 = PersistenciaProveedor.obtenerProveedor(r.getInt("idproveedor"));
                    t1 = PersistenciaTarifa.obtenerTarifa(r.getInt("idtarifa"));
                    a = new Pelicula(r.getInt("id"), r.getDate("fechaalta"), p1, r.getBoolean("disponible"), t1, r.getString("titulo"), r.getString("genero"), r.getInt("ano"), r.getInt("duracion"), r.getString("actores"), r.getFloat("valoracion"), r.getInt("edadMinima"), r.getString("director"), r.getBoolean("sevende"));
                } else if (r.getString("tipo").compareTo("Juego") == 0) {
                    p1 = PersistenciaProveedor.obtenerProveedor(r.getInt("idproveedor"));
                    t1 = PersistenciaTarifa.obtenerTarifa(r.getInt("idtarifa"));
                    a = new Juego(r.getInt("id"), r.getDate("fechaalta"), p1, r.getBoolean("disponible"), t1, r.getString("titulo"), r.getString("soporte"), r.getInt("edadMinima"), r.getString("genero"), r.getFloat("valoracion"), r.getBoolean("sevende"));

                } else if (r.getString("tipo").compareTo("ArticuloVenta") == 0) {
                    p1 = PersistenciaProveedor.obtenerProveedor(r.getInt("idproveedor"));
                    t1 = PersistenciaTarifa.obtenerTarifa(r.getInt("idtarifa"));
                    a = new ArticuloVenta(r.getInt("id"), r.getDate("fechaalta"),r.getString("titulo"), p1, t1, r.getBoolean("sevende"), r.getBoolean("disponible"));
                }
                lista.add(a);
            }
            st.close();
            con.close();
        } catch (SQLException ex) {
            Logger.getLogger(PersistenciaArticulo.class.getName()).log(Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            Logger.getLogger(PersistenciaArticulo.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            Logger.getLogger(PersistenciaArticulo.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(PersistenciaArticulo.class.getName()).log(Level.SEVERE, null, ex);
        }

        return lista;
    }

    public static int insertarJuego(Juego j) {

        int i = 0;
        String tipo = "Juego";
        Connection con = null;
        Statement st = null;
        java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String fAlta = sdf.format(j.getFechaAlta());
        try {


            Class.forName("com.mysql.jdbc.Driver").newInstance();
            con = DriverManager.getConnection("jdbc:mysql://192.168.1.18/videoclub", "cibernos", "1234");
            st = con.createStatement();
            i = st.executeUpdate("insert into articulo (id,fechaalta,idproveedor,idtarifa,titulo,soporte,genero,edadMinima,sevende,tipo) values"
                    + "(0,'" + fAlta + "'," + j.getProve().getId() + "," + j.getTarifa().getId() + ",'" + j.getTitulo() + "','" + j.getSoporte() + "','" + j.getGenero() + "'," + j.getEdad() + "," + j.isSeVende() + ",'" + tipo + "')");
            st.close();
            con.close();


        } catch (SQLException ex) {
            Logger.getLogger(PersistenciaArticulo.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(PersistenciaArticulo.class.getName()).log(Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            Logger.getLogger(PersistenciaArticulo.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            Logger.getLogger(PersistenciaArticulo.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            return i;
        }
    }

    public static int insertarPelicula(Pelicula p) {

        int i = 0;
        String tipo = "Pelicula";
        Connection con = null;
        Statement st = null;
        java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String fAlta = sdf.format(p.getFechaAlta());
        try {


            Class.forName("com.mysql.jdbc.Driver").newInstance();
            con = DriverManager.getConnection("jdbc:mysql://192.168.1.18/videoclub", "cibernos", "1234");
            st = con.createStatement();
            i = st.executeUpdate("insert into articulo (id,fechaalta,idproveedor,idtarifa,titulo,genero,ano,duracion,actores,valoracion,edadMinima,director,sevende,tipo) values"
                    + "(0,'" + fAlta + "'," + p.getProve().getId() + "," + p.getTarifa().getId() + ",'" + p.getTitulo() + "','" + p.getGenero() + "'," + p.getAnyo() + "," + p.getDuracion() + ",'" + p.getActores() + "'," + p.getValoracion() + "," + p.getEdadMinima() + ",'" + p.getDirector() + "'," + p.isSeVende() + ",'" + tipo + "')");
            st.close();
            con.close();


        } catch (SQLException ex) {
            Logger.getLogger(PersistenciaArticulo.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(PersistenciaArticulo.class.getName()).log(Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            Logger.getLogger(PersistenciaArticulo.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            Logger.getLogger(PersistenciaArticulo.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            return i;
        }
    }

    public static int insertarGenero(String gener) {
        int i=0;
        Connection con = null;
        Statement st = null;
        try {
            try {
                Class.forName("com.mysql.jdbc.Driver").newInstance();
                con = DriverManager.getConnection("jdbc:mysql://192.168.1.18/videoclub", "cibernos", "1234");
                st = con.createStatement();
                i = st.executeUpdate("insert into generos (id,genero) values"
                        + "(0,'" + gener + "')");
            } catch (SQLException ex) {
                Logger.getLogger(PersistenciaArticulo.class.getName()).log(Level.SEVERE, null, ex);
            } catch (InstantiationException ex) {
                Logger.getLogger(PersistenciaArticulo.class.getName()).log(Level.SEVERE, null, ex);
            } catch (IllegalAccessException ex) {
                Logger.getLogger(PersistenciaArticulo.class.getName()).log(Level.SEVERE, null, ex);
            } finally {
                st.close();
                con.close();

            }
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(PersistenciaArticulo.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            return i;
        }
    }
    
    public static int insertarSoporte(String soporte) {
        int i=0;
        Connection con = null;
        Statement st = null;
        try {
            try {
                Class.forName("com.mysql.jdbc.Driver").newInstance();
                con = DriverManager.getConnection("jdbc:mysql://192.168.1.18/videoclub", "cibernos", "1234");
                st = con.createStatement();
                i = st.executeUpdate("insert into soportes (id,soporte) values"
                        + "(0,'" + soporte + "')");
            } catch (SQLException ex) {
                Logger.getLogger(PersistenciaArticulo.class.getName()).log(Level.SEVERE, null, ex);
            } catch (InstantiationException ex) {
                Logger.getLogger(PersistenciaArticulo.class.getName()).log(Level.SEVERE, null, ex);
            } catch (IllegalAccessException ex) {
                Logger.getLogger(PersistenciaArticulo.class.getName()).log(Level.SEVERE, null, ex);
            } finally {
                st.close();
                con.close();

            }
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(PersistenciaArticulo.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            return i;
        }
    }

    public static int insertarArticuloVenta(Articulo a) {

        int i = 0;
        String tipo = "ArticuloVenta";
        Connection con = null;
        Statement st = null;
        java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String fAlta = sdf.format(a.getFechaAlta());
        try {


            Class.forName("com.mysql.jdbc.Driver").newInstance();
            con = DriverManager.getConnection("jdbc:mysql://192.168.1.18/videoclub", "cibernos", "1234");
            st = con.createStatement();
            i = st.executeUpdate("insert into articulo (id,fechaalta,idproveedor,idtarifa,titulo,sevende,tipo) values"
                    + "(0,'" + fAlta + "'," + a.getProve().getId() + "," + a.getTarifa().getId() + ",'" + a.getTitulo() + "',1,'" + tipo + "')");
            st.close();
            con.close();


        } catch (SQLException ex) {
            Logger.getLogger(PersistenciaArticulo.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(PersistenciaArticulo.class.getName()).log(Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            Logger.getLogger(PersistenciaArticulo.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            Logger.getLogger(PersistenciaArticulo.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            return i;
        }
    }

    public static List<Juego> devolverJuego() {

        List<Juego> j = new ArrayList<Juego>();
        Connection con = null;
        Statement st = null;
        Proveedor p1;
        Tarifa t1;
        try {
            try {
                Class.forName("com.mysql.jdbc.Driver").newInstance();
                con = DriverManager.getConnection("jdbc:mysql://192.168.1.18/videoclub", "cibernos", "1234");
                st = con.createStatement();
                ResultSet r = st.executeQuery("select id,fechaalta,idproveedor,idtarifa,disponible,valoracion,titulo,soporte,edadMinima,genero,sevende,baja,tipo from articulo where articulo.baja='0' and articulo.tipo='juego'");
                while (r.next()) {
                    p1 = PersistenciaProveedor.obtenerProveedor(r.getInt("idproveedor"));
                    t1 = PersistenciaTarifa.obtenerTarifa(r.getInt("idtarifa"));
                    Juego ju = new Juego(r.getInt("id"), r.getDate("fechaalta"), p1, r.getBoolean("disponible"), t1, r.getString("titulo"), r.getString("soporte"), r.getInt("edadMinima"), r.getString("genero"), r.getFloat("valoracion"), r.getBoolean("sevende"));
                    j.add(ju);
                }
            } catch (SQLException ex) {
                Logger.getLogger(PersistenciaArticulo.class.getName()).log(Level.SEVERE, null, ex);
            } catch (InstantiationException ex) {
                Logger.getLogger(PersistenciaArticulo.class.getName()).log(Level.SEVERE, null, ex);
            } catch (IllegalAccessException ex) {
                Logger.getLogger(PersistenciaArticulo.class.getName()).log(Level.SEVERE, null, ex);
            } finally {
                st.close();
                con.close();

            }
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(PersistenciaArticulo.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            return j;
        }
    }

    public static List<Pelicula> devolverPelicula() {

        List<Pelicula> p = new ArrayList<Pelicula>();
        Connection con = null;
        Statement st = null;
        Proveedor p1;
        Tarifa t1;
        try {
            try {
                Class.forName("com.mysql.jdbc.Driver").newInstance();
                con = DriverManager.getConnection("jdbc:mysql://192.168.1.18/videoclub", "cibernos", "1234");
                st = con.createStatement();
                ResultSet r = st.executeQuery("select id,fechaalta,idproveedor,idtarifa,disponible,titulo,genero,edadMinima,director,ano,duracion,actores,valoracion,sevende from articulo where articulo.baja='0' and articulo.tipo='pelicula'");
                while (r.next()) {
                    p1 = PersistenciaProveedor.obtenerProveedor(r.getInt("idproveedor"));
                    t1 = PersistenciaTarifa.obtenerTarifa(r.getInt("idtarifa"));
                    Pelicula pe = new Pelicula(r.getInt("id"), r.getDate("fechaalta"), p1, r.getBoolean("disponible"), t1, r.getString("titulo"), r.getString("genero"), r.getInt("ano"), r.getInt("duracion"), r.getString("actores"), r.getFloat("valoracion"), r.getInt("edadMinima"), r.getString("director"), r.getBoolean("sevende"));
                    p.add(pe);
                }
            } catch (SQLException ex) {
                Logger.getLogger(PersistenciaArticulo.class.getName()).log(Level.SEVERE, null, ex);
            } catch (InstantiationException ex) {
                Logger.getLogger(PersistenciaArticulo.class.getName()).log(Level.SEVERE, null, ex);
            } catch (IllegalAccessException ex) {
                Logger.getLogger(PersistenciaArticulo.class.getName()).log(Level.SEVERE, null, ex);
            } finally {
                st.close();
                con.close();

            }

        } finally {
            return p;
        }
    }
    //cambiar lo de  pelicula por articulo de venta

    public static List<ArticuloVenta> devolverArticuloVenta() {

        List<ArticuloVenta> a = new ArrayList<ArticuloVenta>();
        Connection con = null;
        Statement st = null;
        Proveedor p1;
        Tarifa t1;
        try {
            try {
                Class.forName("com.mysql.jdbc.Driver").newInstance();
                con = DriverManager.getConnection("jdbc:mysql://192.168.1.18/videoclub", "cibernos", "1234");
                st = con.createStatement();
                ResultSet r = st.executeQuery("select id,fechaalta,idproveedor,idtarifa,titulo,sevende, disponible from articulo where articulo.baja='0' and articulo.tipo='ArticuloVenta'");
                while (r.next()) {
                    p1 = PersistenciaProveedor.obtenerProveedor(r.getInt("idproveedor"));
                    t1 = PersistenciaTarifa.obtenerTarifa(r.getInt("idtarifa"));
                    ArticuloVenta ar = new ArticuloVenta(r.getInt("id"), r.getDate("fechaalta"),r.getString("titulo"), p1, t1, r.getBoolean("sevende"), r.getBoolean("disponible"));
                    a.add(ar);
                }
            } catch (SQLException ex) {
                Logger.getLogger(PersistenciaArticulo.class.getName()).log(Level.SEVERE, null, ex);
            } catch (InstantiationException ex) {
                Logger.getLogger(PersistenciaArticulo.class.getName()).log(Level.SEVERE, null, ex);
            } catch (IllegalAccessException ex) {
                Logger.getLogger(PersistenciaArticulo.class.getName()).log(Level.SEVERE, null, ex);
            } finally {
                st.close();
                con.close();

            }
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(PersistenciaArticulo.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            return a;
        }
    }

    public static List<String> devolverGeneros() {

        List<String> aGenero = new ArrayList<String>();
        Connection con = null;
        Statement st = null;
        try {
            try {
                Class.forName("com.mysql.jdbc.Driver").newInstance();
                con = DriverManager.getConnection("jdbc:mysql://192.168.1.18/videoclub", "cibernos", "1234");
                st = con.createStatement();
                ResultSet r = st.executeQuery("select id,genero from generos");
                while (r.next()) {
                    String genero = r.getString("genero");
                    aGenero.add(genero);
                }
            } catch (SQLException ex) {
                Logger.getLogger(PersistenciaArticulo.class.getName()).log(Level.SEVERE, null, ex);
            } catch (InstantiationException ex) {
                Logger.getLogger(PersistenciaArticulo.class.getName()).log(Level.SEVERE, null, ex);
            } catch (IllegalAccessException ex) {
                Logger.getLogger(PersistenciaArticulo.class.getName()).log(Level.SEVERE, null, ex);
            } finally {
                st.close();
                con.close();

            }
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(PersistenciaArticulo.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            return aGenero;
        }
    }

    public static List<String> devolverSoportes() {

        List<String> aSoporte = new ArrayList<String>();
        Connection con = null;
        Statement st = null;
        try {
            try {
                Class.forName("com.mysql.jdbc.Driver").newInstance();
                con = DriverManager.getConnection("jdbc:mysql://192.168.1.18/videoclub", "cibernos", "1234");
                st = con.createStatement();
                ResultSet r = st.executeQuery("select id,soporte from soportes");
                while (r.next()) {
                    String genero = r.getString("soporte");
                    aSoporte.add(genero);
                }
            } catch (SQLException ex) {
                Logger.getLogger(PersistenciaArticulo.class.getName()).log(Level.SEVERE, null, ex);
            } catch (InstantiationException ex) {
                Logger.getLogger(PersistenciaArticulo.class.getName()).log(Level.SEVERE, null, ex);
            } catch (IllegalAccessException ex) {
                Logger.getLogger(PersistenciaArticulo.class.getName()).log(Level.SEVERE, null, ex);
            } finally {
                st.close();
                con.close();
            }
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(PersistenciaArticulo.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            return aSoporte;
        }
    }
    
    public static int modificarGenero(String gener, String nuevogener) {
        int i=0;
        Connection con = null;
        Statement st = null;
        try {
            try {
                Class.forName("com.mysql.jdbc.Driver").newInstance();
                con = DriverManager.getConnection("jdbc:mysql://192.168.1.18/videoclub", "cibernos", "1234");
                st = con.createStatement();
                i = st.executeUpdate("update generos set genero='"+nuevogener+"' where generos.genero='"+gener+"'");
            } catch (SQLException ex) {
                Logger.getLogger(PersistenciaArticulo.class.getName()).log(Level.SEVERE, null, ex);
            } catch (InstantiationException ex) {
                Logger.getLogger(PersistenciaArticulo.class.getName()).log(Level.SEVERE, null, ex);
            } catch (IllegalAccessException ex) {
                Logger.getLogger(PersistenciaArticulo.class.getName()).log(Level.SEVERE, null, ex);
            } finally {
                st.close();
                con.close();

            }
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(PersistenciaArticulo.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            return i;
        }
    }
    
    public static int modificarSoporte(String soporte, String nuevosoporte) {
        int i=0;
        Connection con = null;
        Statement st = null;
        try {
            try {
                Class.forName("com.mysql.jdbc.Driver").newInstance();
                con = DriverManager.getConnection("jdbc:mysql://192.168.1.18/videoclub", "cibernos", "1234");
                st = con.createStatement();
                i = st.executeUpdate("update soportes set soporte='"+nuevosoporte+"' where soportes.soporte= '"+soporte+"'");
            } catch (SQLException ex) {
                Logger.getLogger(PersistenciaArticulo.class.getName()).log(Level.SEVERE, null, ex);
            } catch (InstantiationException ex) {
                Logger.getLogger(PersistenciaArticulo.class.getName()).log(Level.SEVERE, null, ex);
            } catch (IllegalAccessException ex) {
                Logger.getLogger(PersistenciaArticulo.class.getName()).log(Level.SEVERE, null, ex);
            } finally {
                st.close();
                con.close();

            }
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(PersistenciaArticulo.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            return i;
        }
    }

    public static int bajaArticulo(int cod) {

        int i = 0;
        Connection con = null;
        Statement st = null;

        try {


            Class.forName("com.mysql.jdbc.Driver").newInstance();
            con = DriverManager.getConnection("jdbc:mysql://192.168.1.18/videoclub", "cibernos", "1234");
            st = con.createStatement();
            i = st.executeUpdate("update articulo set baja='1' where articulo.id=" + cod + ";");
            st.close();
            con.close();


        } catch (SQLException ex) {
            Logger.getLogger(PersistenciaArticulo.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(PersistenciaArticulo.class.getName()).log(Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            Logger.getLogger(PersistenciaArticulo.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            Logger.getLogger(PersistenciaArticulo.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            return i;
        }
    }

    public static int valorarArticulo(Articulo a) {
        int i = 0;
        Connection con = null;
        Statement st = null;

        try {



            Class.forName("com.mysql.jdbc.Driver").newInstance();
            con = DriverManager.getConnection("jdbc:mysql://192.168.1.18/videoclub", "cibernos", "1234");
            st = con.createStatement();
            if (a instanceof Pelicula) {
                Pelicula p = (Pelicula) a;
                i = st.executeUpdate("update articulo set valoracion=" + p.getValoracion() + " where articulo.id=" + a.getId() + ";");
            }
            if (a instanceof Juego) {
                Juego j = (Juego) a;
                i = st.executeUpdate("update articulo set valoracion=" + j.getValoracion() + " where articulo.id=" + a.getId() + ";");
            }
            st.close();
            con.close();


        } catch (SQLException ex) {
            Logger.getLogger(PersistenciaArticulo.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(PersistenciaArticulo.class.getName()).log(Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            Logger.getLogger(PersistenciaArticulo.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            Logger.getLogger(PersistenciaArticulo.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            return i;
        }
    }

    public static List<Articulo> mostrarNovedades() {
        List<Articulo> lista = new ArrayList<Articulo>();
        Connection con = null;
        Statement st = null;
        Proveedor p1;
        Tarifa t1;
        Calendar miFecha = Calendar.getInstance();
        int ano = miFecha.get(Calendar.YEAR);
        try {
            try {
                Class.forName("com.mysql.jdbc.Driver").newInstance();
                con = DriverManager.getConnection("jdbc:mysql://192.168.1.18/videoclub", "cibernos", "1234");
                st = con.createStatement();
                ResultSet r = st.executeQuery("select id,fechaalta,idproveedor,idtarifa,titulo,disponible,sevende,genero,ano,duracion,actores,valoracion,edadMinima,director from articulo where articulo.baja='0' and articulo.disponible=1 and articulo.ano=" + ano);
                while (r.next()) {
                    p1 = PersistenciaProveedor.obtenerProveedor(r.getInt("idproveedor"));
                    t1 = PersistenciaTarifa.obtenerTarifa(r.getInt("idtarifa"));
                    Articulo p = new Pelicula(r.getInt("id"), r.getDate("fechaAlta"), p1, r.getBoolean("disponible"), t1, r.getString("titulo"), r.getString("genero"), r.getInt("ano"), r.getInt("duracion"), r.getString("actores"), r.getFloat("valoracion"), r.getInt("edadMinima"), r.getString("director"), r.getBoolean("sevende"));
                    lista.add(p);
                }
            } catch (SQLException ex) {
                Logger.getLogger(PersistenciaArticulo.class.getName()).log(Level.SEVERE, null, ex);
            } catch (InstantiationException ex) {
                Logger.getLogger(PersistenciaArticulo.class.getName()).log(Level.SEVERE, null, ex);
            } catch (IllegalAccessException ex) {
                Logger.getLogger(PersistenciaArticulo.class.getName()).log(Level.SEVERE, null, ex);
            } finally {
                st.close();
                con.close();

            }
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(PersistenciaArticulo.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            return lista;
        }
    }

    public static List<Articulo> mostrarMejorValoradas() {
        List<Articulo> lista = new ArrayList<Articulo>();
        Articulo a = null;
        Connection con = null;
        Statement st = null;
        Proveedor p1;
        Tarifa t1;
        Calendar miFecha = Calendar.getInstance();
        int ano = miFecha.get(Calendar.YEAR);
        try {
            try {
                Class.forName("com.mysql.jdbc.Driver").newInstance();
                con = DriverManager.getConnection("jdbc:mysql://192.168.1.18/videoclub", "cibernos", "1234");
                st = con.createStatement();
                ResultSet r = st.executeQuery("select id,fechaalta,idproveedor,idtarifa,titulo,soporte,disponible,sevende,genero,ano,tipo,duracion,actores,valoracion,edadMinima,director from articulo where articulo.baja='0' and articulo.disponible=1 and articulo.valoracion>=5 order by valoracion desc");
                while (r.next()) {
                    p1 = PersistenciaProveedor.obtenerProveedor(r.getInt("idproveedor"));
                    t1 = PersistenciaTarifa.obtenerTarifa(r.getInt("idtarifa"));
                    if (r.getString("tipo").compareTo("Pelicula") == 0) {
                        a = new Pelicula(r.getInt("id"), r.getDate("fechaAlta"), p1, r.getBoolean("disponible"), t1, r.getString("titulo"), r.getString("genero"), r.getInt("ano"), r.getInt("duracion"), r.getString("actores"), r.getFloat("valoracion"), r.getInt("edadMinima"), r.getString("director"), r.getBoolean("sevende"));
                        lista.add(a);
                    } else if (r.getString("tipo").compareTo("Juego") == 0) {
                        a = new Juego(r.getInt("id"), r.getDate("fechaAlta"), p1, r.getBoolean("disponible"), t1, r.getString("titulo"), r.getString("soporte"), r.getInt("edadMinima"), r.getString("genero"), r.getFloat("valoracion"), r.getBoolean("sevende"));
                        lista.add(a);
                    }
                }
            } catch (SQLException ex) {
                Logger.getLogger(PersistenciaArticulo.class.getName()).log(Level.SEVERE, null, ex);
            } catch (InstantiationException ex) {
                Logger.getLogger(PersistenciaArticulo.class.getName()).log(Level.SEVERE, null, ex);
            } catch (IllegalAccessException ex) {
                Logger.getLogger(PersistenciaArticulo.class.getName()).log(Level.SEVERE, null, ex);
            } finally {
                st.close();
                con.close();

            }
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(PersistenciaArticulo.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            return lista;
        }
    }

    public static int preseleccionarArticulo(ArticuloAlquilado a) {
        int i = 0;
        Connection con = null;
        Statement st = null;
        try {

            Class.forName("com.mysql.jdbc.Driver").newInstance();
            con = DriverManager.getConnection("jdbc:mysql://192.168.1.18/videoclub", "cibernos", "1234");
            st = con.createStatement();
            i = st.executeUpdate("update articulo set disponible=0 where articulo.id=" + a.getId());
            st.close();
            con.close();
        } catch (SQLException ex) {
            Logger.getLogger(PersistenciaArticulo.class.getName()).log(Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            Logger.getLogger(PersistenciaArticulo.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            Logger.getLogger(PersistenciaArticulo.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(PersistenciaArticulo.class.getName()).log(Level.SEVERE, null, ex);
        }
        return i;
    }

    public static int deseleccionaArticulo(ArticuloAlquilado a) {
        int i = 0;
        Connection con = null;
        Statement st = null;
        try {

            Class.forName("com.mysql.jdbc.Driver").newInstance();
            con = DriverManager.getConnection("jdbc:mysql://192.168.1.18/videoclub", "cibernos", "1234");
            st = con.createStatement();
            i = st.executeUpdate("update articulo set disponible=1 where articulo.id=" + a.getId());
            st.close();
            con.close();
        } catch (SQLException ex) {
            Logger.getLogger(PersistenciaArticulo.class.getName()).log(Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            Logger.getLogger(PersistenciaArticulo.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            Logger.getLogger(PersistenciaArticulo.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(PersistenciaArticulo.class.getName()).log(Level.SEVERE, null, ex);
        }
        return i;
    }
    
    
    public static int modificarArticulos(int cod,String nombre,String valor){
        int i = 0;
        Connection con = null;
        Statement st = null;       
        try {
            Class.forName("com.mysql.jdbc.Driver").newInstance();
            con = DriverManager.getConnection("jdbc:mysql://192.168.1.18/videoclub", "cibernos", "1234");
            st = con.createStatement();
            i = st.executeUpdate("update articulo set "+nombre+"='"+valor+"' where articulo.id="+cod);
            st.close();
            con.close();
        } catch (SQLException ex) {
            Logger.getLogger(PersistenciaArticulo.class.getName()).log(Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            Logger.getLogger(PersistenciaArticulo.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            Logger.getLogger(PersistenciaArticulo.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(PersistenciaArticulo.class.getName()).log(Level.SEVERE, null, ex);
        }
        return i;
    }
}
